package basics

import "fmt"

// ForControl 选择结构 if
func ForControl() {

	for i := 0; i < 10; i++ {
		fmt.Println(i)
	}

	// Go语言中没有while/dowhile循环，所以可以通过如下格式实现C语言中while循环用法
	i := 0
	for i < 10 {
		fmt.Println(i)
		i++
	}

	// 死循环
	for {
		fmt.Println("根本停不下来")
	}

	// for range 快速遍历数组、map等数据结构
	arr := [3]int{1, 3, 5}
	// i用于保存当前遍历到数组的索引，v用于保存当前遍历到数组的值
	for i, v := range arr {
		fmt.Println(i, v)
	}

	// 利用break跳转到指定标签
outer:
	for i := 0; i < 5; i++ {
		for j := 0; j < 10; j++ {
			if j == 5 {
				break outer // 跳出到指定标签
			}
			fmt.Println(j)
		}
	}
	fmt.Println("come here")

	for i := 0; i < 5; i++ {
		if i == 2 {
			continue
		}
		fmt.Println(i)
	}

	// 利用continue跳转到指定标签
outer2:
	for i := 0; i <= 5; i++ {
		fmt.Println("i =", i) // 0 1 2 3 4
		for j := 0; j < 10; j++ {
			if j == 5 {
				continue outer2 // 跳出到指定标签，跳到最外层循环继续判断条件执行
			}
		}
	}
	fmt.Println("come here2")

}
